/*
 * Powered By [lixin]
 * 代码脚手架工具生成 [AI-Code]
 */

package com.rzhkj.box.entity;

import com.rzhkj.core.base.BaseEntity;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * 收纳箱实体类
 *
 * @author lixin hegaoye@qq.com
 * @version 1.0
 * @since 1.0
 */

@Data
public class Box extends BaseEntity implements java.io.Serializable {
    private java.lang.String code;//数据库字段:code  属性显示:编码
    private java.lang.String accountCode;//数据库字段:accountCode  属性显示:账户编码
    private java.lang.String name;//数据库字段:name  属性显示:收纳盒名称
    private java.lang.String namespace;//数据库字段:namespace  属性显示:命名空间
    private java.lang.String summary;//数据库字段:summary  属性显示:说明 100个字以内
    private java.lang.String apiKey;//数据库字段:apiKey  属性显示:apiKey
    private java.lang.String apiSecret;//数据库字段:apiSecret  属性显示:apiSecret
    private java.lang.String state;//数据库字段:state  属性显示:状态启用 Enable,禁用Disable
    private java.lang.String compressType;//数据库字段:compressType  属性显示:压缩尺寸使用分号分割 如：32x32;50x50;100x100
    private java.lang.String isCompress;//数据库字段:isCache  属性显示:是否压缩 Y N
    private java.lang.String isCache;//数据库字段:isCache  属性显示:是否缓存
    private java.lang.String mediaLimit;//数据库字段:mediaLimit  属性显示:data:image/*表示只允许上传图片类型,data:image/jpeg;image/png表示只允许上传jpg和png类型的图片,data:!application/json;!text/plain;image/*表示禁止上传json文本和纯文本但是允许图片类型。注意最叹号!
    private java.lang.Integer minLimit;//数据库字段:minLimit  属性显示:最小文件限制 字节kB
    private java.lang.Integer maxLimit;//数据库字段:maxLimit  属性显示:最大文件限制  字节KB
    private java.util.Date createTime;//数据库字段:createTime  属性显示:创建时间
    private java.util.Date updateTime;//数据库字段:updateTime  属性显示:更新时间


    //获得允许上传的类型集合
    public Map<String, MediaType> mediaLimitMap() {
        Map<String, MediaType> mediaTypes = null;
        if (mediaLimit != null) {
            String[] mediaTypeArray = this.mediaLimit.split(";");
            mediaTypes = new HashMap();
            for (String mediaTypeStr : mediaTypeArray) {
                MediaType mediaType = MediaType.getEnum(mediaTypeStr);
                mediaTypes.put(mediaType.name(), mediaType);
            }
        }
        return mediaTypes == null ? new HashMap() : mediaTypes;
    }


    public enum BoxLimit {
        MinLimit(1),//1kb
        MaxLimit(5120), //5m
        ;
        public int val;

        BoxLimit(int val) {
            this.val = val;
        }

        public static BoxLimit getEnum(String stateName) {
            for (BoxLimit boxLimit : BoxLimit.values()) {
                if (boxLimit.name().equalsIgnoreCase(stateName)) {
                    return boxLimit;
                }
            }
            return null;
        }

        @Override
        public String toString() {
            return this.name();
        }

    }
}

